epub2 库

在电子书开发领域,处理 EPUB 格式是一项常见任务。epub2 是一个强大的Node.js模块,专门用于解析 EPUB 电子书文件。本文将详细介绍 epub2 库的使用方法,帮助开发者轻松集成 EPUB 解析功能到自己的项目中。

项目首页,这个库是对 epub 库的 fork 版本。

安装:npm install epub2 zipfile


包导入方法

epub2支持多种导入方式,你可以根据自己的项目需求选择合适的方式:

// CommonJS
const EPub = require("epub2/node");

// ES6 模块 (TypeScript)
import * as EPub from 'epub2/node';

// 或者
import EPub from 'epub2';
import { EPub } from 'epub2';

创建 EPub 实例

要开始解析EPUB文件,首先需要创建一个EPub实例:

const epub = new EPub(epubfile, imagewebroot, chapterwebroot);

参数说明:


异步解析

epub2 提供了异步方法来创建和解析EPUB文件:

// 使用 async/await
let epub = await EPub.createAsync(epubfile, imagewebroot, chapterwebroot);

// 或使用 Promise
EPub.createAsync(epubfile, imagewebroot, chapterwebroot)
    .then(function (epub) {
        // 处理epub对象
    })
    .catch(function (err) {
        console.log("ERROR:", err);
    });

访问元数据

解析完成后,你可以轻松访问EPUB文件的元数据:

console.log(epub.metadata.title);
console.log(epub.metadata.creator);

可用的元数据字段包括:


访问目录

epub2 提供了两种方式来访问电子书的结构:

方式一:flow: 实际的章节列表

flow 是 epub 对象的一个​​属性,保存实际的章节列表(TOC 只是一个指示,可以链接到章节文件内的 # url)

epub.flow.forEach(function(chapter) {
    console.log(chapter.id);
});

加载章节 getChapter 需要章节 id

方式二:toc: 目录(Table of Contents)

toc 是 epub 对象的一个​​属性,指示 TOC 的标题/url 列表。需要使用 href 属性检测实际章节及其 ID

epub.toc.forEach(function(chapter) {
    console.log(chapter.title, chapter.href);
});

获取章节内容

你可以使用getChapter方法来获取特定章节的内容:

epub.getChapter(chapter_id, function(error, text){
    if (!error) {
        console.log("Chapter content:", text);
    } else {
        console.error("Error loading chapter:", error);
    }
});

获取图片

使用getImage方法来获取EPUB中的图片:

epub.getImage("image1", function(error, img, mimeType){
    if (!error) {
        console.log("Image data:", img);
        console.log("MIME type:", mimeType);
    } else {
        console.error("Error loading image:", error);
    }
});

获取其他文件

对于EPUB中的其他文件(如CSS),可以使用getFile方法:

epub.getFile("css1", function(error, data, mimeType){
    if (!error) {
        console.log("File data:", data);
        console.log("MIME type:", mimeType);
    } else {
        console.error("Error loading file:", error);
    }
});

注意事项

  1. epub2目前只支持UTF-8编码的电子书。
  2. 如果你在使用过程中遇到 Promise 相关的问题,可以通过设置EPub.libPromise来更改使用的 Promise 库。

本文作者:Maeiee

本文链接:epub2 库

版权声明:如无特别声明,本文即为原创文章,版权归 Maeiee 所有,未经允许不得转载!


喜欢我文章的朋友请随缘打赏,鼓励我创作更多更好的作品!